home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 18 Board & Card Games / BATLSHIP.BIN (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  5.6 KB  |  221 lines

  1. 0 REM -- FILENAME: "BATLSHIP.BIN".
  2. 1 REM *REVISED BATTLESHIP* UPLOADED TO    THE C.I.S. CBMART FORUM 03/25/1995.
  3. 10 CLR:CH=0:PH=0:PRINT"[147]":POKE53280,7:POKE53281,7:PRINT"[210]ANDOMIZING..."
  4. 20 C=RND(-TI):FORY=0TO999:C=RND(1):NEXTY:PRINT"[147]"+CHR$(142)
  5. 30 FORY=1024TO1063
  6. 40 C=(RND(1)*16)+1:IFC=7THEN40
  7. 50 POKEY,160:POKEY+54272,C:NEXTY
  8. 60 FORY=1063TO2023STEP40
  9. 70 C=(RND(1)*16)+1:IFC=7THEN70
  10. 80 POKEY,160:POKEY+54272,C:NEXTY
  11. 90 FORY=2023TO1984STEP-1
  12. 100 C=(RND(1)*16)+1:IFC=7THEN100
  13. 110 POKEY,160:POKEY+54272,C:NEXTY
  14. 120 FORY=1984TO1024STEP-40
  15. 130 C=(RND(1)*16)+1:IFC=7THEN130
  16. 140 POKEY,160:POKEY+54272,C:NEXTY
  17. 150 POKE657,128:POKE145,254
  18. 160 A=1153:B=1181:D=1
  19. 170 FORF=1152TO1181:POKEF+54272,6:NEXTF
  20. 180 READC
  21. 190 FORX=BTOASTEP-1:POKEX,C:POKEX+54272,10:POKEX,32:NEXTX
  22. 200 POKEX,C
  23. 210 A=A+2:D=D+1
  24. 220 IFD=13THEN240
  25. 230 GOTO180
  26. 240 A=1238:B=1262:D=1
  27. 250 FORF=1236TO1260:POKEF+54272,1:NEXTF
  28. 260 READC
  29. 270 FORX=BTOASTEP-2:POKEX,C:POKEX+54272,1:POKEX,32:NEXTX:POKEX,C
  30. 280 A=A+2:D=D+1
  31. 290 IFD=9THEN310
  32. 300 GOTO260
  33. 310 A=1396:B=1414:D=1
  34. 320 FORF=1394TO1414:POKEF+54272,1:NEXTF
  35. 330 READC
  36. 340 FORX=BTOASTEP-2:POKEX,C:POKEX+54272,1:POKEX,32:NEXTX:POKEX,C
  37. 350 A=A+2:D=D+1
  38. 360 IFD=11THEN380
  39. 370 GOTO330
  40. 380 FORX=1755TO1772:READA:POKEX,A:POKEX+54272,12:NEXTX
  41. 390 FORX=1714TO1732:READB:POKEX,B:POKEX+54272,6:NEXTX
  42. 400 FORX=1677TO1689:READC:POKEX,C:POKEX+54272,6:NEXTX
  43. 410 FORX=1639TO1647:READD:E=E+1:POKEX,D:POKEX+54272,6:NEXTX
  44. 420 POKE1607,101:POKE1567,223:POKE1607+54272,6:POKE1567+54272,6:POKE198,0
  45. 430 PRINT:PRINT:PRINT" PRESS ANY KEY TO BEGIN [146]"
  46. 440 X=1772
  47. 450 POKEX,115:FORL=1TO25:NEXTL
  48. 460 POKEX,113:FORL=1TO25:NEXTL
  49. 470 POKEX,107:FORL=1TO25:NEXTL
  50. 480 POKEX,114:FORL=1TO25:NEXTL
  51. 490 GETA$:IFA$=""THEN450
  52. 500 POKE53280,7:POKE53281,7
  53. 510 PRINT"[147]" :PRINT"              INSTRUCTIONS [146]"
  54. 520 PRINT"              ------------"
  55. 530 PRINT:PRINT
  56. 540 PRINT"  WELCOME TO THE COMMODORE VERSION OF"
  57. 550 PRINT:PRINT"  BATTLESHIP. THE GAME PLAYS SIMILARLY"
  58. 560 PRINT:PRINT"  TO THE BOARD GAME OF THE SAME NAME."
  59. 570 PRINT:PRINT"  YOU WILL HIDE THREE OF YOUR SHIPS "
  60. 580 PRINT:PRINT"  ON AN EIGHT BY EIGHT GRID, AND TRY"
  61. 590 PRINT:PRINT"  TO SINK THE COMMODORE'S SHIPS"
  62. 600 PRINT:PRINT"  BEFORE HE SINKS YOURS."
  63. 610 PRINT:PRINT:PRINT"          HIT ANY KEY TO CONTINUE [146]"
  64. 620 GETA$:IFA$=""THEN620
  65. 630 PRINT"[147]"
  66. 640 PRINT"         INSTRUCTIONS, CONTINUED [146]"
  67. 650 PRINT
  68. 660 PRINT:PRINT"  THE GRID IS LABELLED FROM 1 TO 8"
  69. 670 PRINT:PRINT"  ON THE TOP AND FROM A TO H ON THE"
  70. 680 PRINT:PRINT"  SIDES. FOR EXAMPLE, IF YOU ENTERED"
  71. 690 PRINT:PRINT"  IN B7 FOR A SHIP'S POSITION, IT WILL"
  72. 700 PRINT:PRINT"  APPEAR OVER 2 AND DOWN SEVEN ON THE"
  73. 710 PRINT:PRINT"  GRID. THE COMMODORE HAS THREE SHIPS"
  74. 720 PRINT:PRINT"  ALSO; THE FIRST ONE TO SINK THE"
  75. 730 PRINT:PRINT"  OPPONENT'S SHIPS IS THE WINNER.":POKE162,0:WAIT162,64
  76. 740 POKE198,0:PRINT:PRINT:PRINT"          HIT ANY KEY TO BEGIN [146]"
  77. 750 GETA$:IFA$=""THEN750
  78. 760 DATA 32,13,9,14,4,45,7,1,13,5,19,32                                     
  79. 770 DATA 16,18,5,19,5,14,20,19
  80. 780 DATA 2,1,20,20,12,5,19,8,9,16
  81. 790 DATA 95,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,105,91
  82. 800 DATA 95,160,160,87,160,160,160,87,160,160,160,87,160,160,160,87,160,160,105
  83. 810 DATA 233,160,160,160,160,160,160,160,160,160,160,160,223
  84. 820 DATA 233,160,192,160,192,160,32,32,101
  85. 830 CLR
  86. 840 REM INPUT PLAYER'S SHIP POSITIONS
  87. 850 POKE53280,7:POKE53281,7
  88. 860 PRINT"[147]"
  89. 870 PRINT"        ENTRY OF SHIPS POSITIONS"
  90. 880 PRINT:PRINT:PRINT
  91. 890 PRINT"    CO-ORDINATES OF THE FIRST SHIP: ";:GOSUB2150:GOSUB1990
  92. 900 IFER=0THENPS$(1)=X$:GOTO920
  93. 910 GOTO840
  94. 920 PRINT:PRINT"    CO-ORDINATES OF THE SECOND SHIP: ";:GOSUB2150:GOSUB1990
  95. 930 IFER=0THENPS$(2)=X$:GOTO950
  96. 940 GOTO840
  97. 950 PRINT:PRINT"    CO-ORDINATES OF THE THIRD SHIP: ";:GOSUB2150:GOSUB1990
  98. 960 IFER=0THENPS$(3)=X$:GOTO980
  99. 970 GOTO840
  100. 980 PRINT:PRINT"    IS THIS CORRECT (Y/N)? ";:GOSUB2150
  101. 990 IFLEFT$(X$,1)="Y"THEN1010
  102. 1000 GOTO840
  103. 1010 FORZ=1TO3:A=1187:FORX=65TO72
  104. 1020 IFLEFT$(PS$(Z),1)=CHR$(X)THEN1040
  105. 1030 A=A+2:NEXTX
  106. 1040 PL(Z)=A
  107. 1050 NEXTZ
  108. 1060 FORZ=1TO3:A=0:FORX=49TO56
  109. 1070 IFRIGHT$(PS$(Z),1)=CHR$(X)THEN1090
  110. 1080 A=A+40:NEXTX
  111. 1090 PL(Z)=PL(Z)+A
  112. 1100 NEXTZ
  113. 1110 POKE53280,7:POKE53281,7:REM DRAW BOARD
  114. 1120 PRINT"[147]"
  115. 1130 PRINT"          B A T T L E S H I P [146]"
  116. 1140 C=1:FORX=1147TO1161STEP2:POKEX,C:POKEX+54272,2:C=C+1:NEXTX
  117. 1150 C=1:FORX=1166TO1180STEP2:POKEX,C:POKEX+54272,6:C=C+1:NEXTX
  118. 1160 C=49:FORX=1185TO1465STEP40:POKEX,C:POKEX+54272,2:C=C+1:NEXTX
  119. 1170 C=49:FORX=1204TO1484STEP40:POKEX,C:POKEX+54272,6:C=C+1:NEXTX
  120. 1180 C=81:X=1187
  121. 1190 Y=X+14:FORA=XTOYSTEP2:POKEA,C:POKEA+54272,1:NEXTA
  122. 1200 X=X+40
  123. 1210 FORA=1TO3:POKEPL(A),218:B=PL(A)+54272:POKEZ,1:NEXTA
  124. 1220 IFX=1507THENX=1206
  125. 1230 IFX=1526THEN1250
  126. 1240 GOTO1190
  127. 1250 REM COMPUTER SHIP LOCATIONS
  128. 1260 FORB=1TO3
  129. 1270 A=1204
  130. 1280 X=INT(RND(1)*8)+1
  131. 1290 FORY=1TO8
  132. 1300 IFY=XTHEN1320
  133. 1310 A=A+40:NEXTY
  134. 1320 X=INT(RND(1)*16)+1
  135. 1330 FORY=1TO15STEP2
  136. 1340 IFY=XTHEN1320
  137. 1350 NEXTY
  138. 1360 CL(B)=A+X
  139. 1370 NEXTB
  140. 1380 IFCL(1)=CL(2)THEN1250
  141. 1390 IFCL(2)=CL(3)THEN1250
  142. 1400 IFCL(3)=CL(1)THEN1250
  143. 1410 G=0
  144. 1420 IFG=0THEN1430
  145. 1430 REM PLAYER'S SHOT ROUTINE
  146. 1440 G=1
  147. 1450 PRINT"   ----PLAYER-----    ---COMMODORE---"
  148. 1460 POKE781,15:SYS59903
  149. 1470 POKE214,14:PRINT:PRINT"     YOUR SHOT: ";:GOSUB2150
  150. 1480 GOSUB1990:IFER=0THENS$=X$:GOTO1500
  151. 1490 GOTO1460
  152. 1500 A=1206:B=65
  153. 1510 IFLEFT$(S$,1)=CHR$(B)THEN1530
  154. 1520 B=B+1:A=A+2:GOTO1510
  155. 1530 C=0:D=49
  156. 1540 IFRIGHT$(S$,1)=CHR$(D)THEN1560
  157. 1550 C=C+40:D=D+1:GOTO1540
  158. 1560 PS=A+C
  159. 1570 IF(PEEK(PS)=86)OR(PEEK(PS)=214)THEN1460
  160. 1580 IFPS=CL(1)THEN1620
  161. 1590 IFPS=CL(2)THEN1620
  162. 1600 IFPS=CL(3)THEN1620
  163. 1610 POKEPS,86:POKEPS+54272,6:GOTO1640
  164. 1620 POKEPS,214:POKEPS+54272,2:PH=PH+1
  165. 1630 IFPH=3THEN1850
  166. 1640 REM COMPUTERS SHOT ROUTINE
  167. 1650 A=1145
  168. 1660 X=INT(RND(1)*8)+1
  169. 1670 FORY=0TO7
  170. 1680 IFY=XTHEN1700
  171. 1690 A=A+40:NEXTY
  172. 1700 REM
  173. 1710 X=INT(RND(1)*16)+1
  174. 1720 FORY=1TO15STEP2
  175. 1730 IFY=XTHEN1710
  176. 1740 NEXTY
  177. 1750 CS=A+X
  178. 1760 IF(PEEK(CS)=86)OR(PEEK(CS)=214)THEN1640
  179. 1770 IFCS=PL(1)THEN1810
  180. 1780 IFCS=PL(2)THEN1810
  181. 1790 IFCS=PL(3)THEN1810
  182. 1800 POKECS,86:POKECS+54272,2:GOTO1830
  183. 1810 POKECS,214:POKECS+54272,6:CH=CH+1
  184. 1820 IFCH=3THEN1900
  185. 1830 PRINT:PRINT:PRINT:PRINT:PRINT"     SCORE[146]=";PH;"          SCORE[146]=";CH
  186. 1840 POKE209,128:POKE210,6:POKE211,0:POKE214,14:POKE1641,32:POKE1640,32:GOTO1460
  187. 1850 FORL=1TO1000:NEXTL:PRINT"[147]"
  188. 1860 PRINT"               GAME OVER"
  189. 1870 PRINT:PRINT
  190. 1880 PRINT"                YOU WIN[146]"
  191. 1890 GOTO1940
  192. 1900 FORL=1TO1000:NEXTL:PRINT"[147]"
  193. 1910 PRINT"               GAME OVER"
  194. 1920 PRINT:PRINT
  195. 1930 PRINT"                 I WIN[146]"
  196. 1940 PRINT:PRINT:PRINT:POKE162,0:WAIT162,128:POKE198,0
  197. 1950 PRINT"       DO YOU WANT TO PLAY AGAIN (Y/N)? ";:GOSUB2150
  198. 1960 IFLEFT$(X$,1)="Y"THEN830
  199. 1970 CLR:RUN2180
  200. 1980 :
  201. 1990 REM INPUT ERROR-CHECK
  202. 2000 :
  203. 2010 ER=0 : REM ER=0 MEANS "NO ERROR".
  204. 2020 :
  205. 2030 REM IS INPUT 2 CHARACTERS LONG?
  206. 2040 IFLEN(X$)<>2THENER=1
  207. 2050 :
  208. 2060 REM IS FIRST CHAR A LETTER A-H?
  209. 2070 IFLEFT$(X$,1)<"A"ORLEFT$(X$,1)>"H"THENER=1
  210. 2080 :
  211. 2090 REM IS SECOND CHAR A NUMBER 1-8?
  212. 2100 IFRIGHT$(X$,1)<"1"ORRIGHT$(X$,1)>"8"THENER=1
  213. 2110 :
  214. 2120 REM WE'RE DONE HERE, REPORT BACK!
  215. 2130 RETURN
  216. 2140 STOP
  217. 2150 REM SPECIAL INPUT ROUTINE...
  218. 2160 CLOSE1:OPEN1,0:INPUT#1,X$:PRINT:CLOSE1:RETURN
  219. 2170 STOP
  220. 2180 END
  221.